package com.imc.platform.base.org.service;


import com.github.pagehelper.PageInfo;
import com.imc.core.config.feign.MyPageImpl;
import com.imc.platform.base.org.pojo.*;
import com.imc.platform.base.user.pojo.User;
import com.imc.platform.base.user.pojo.UserAttach;
import com.imc.platform.base.user.pojo.UserDesc;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

public interface IOrgService {
    /*
    *ZL 2018-8-3 14:47:19
    *方法描述：查询组织机构ID,名称分页
    */
    PageInfo<Org> queryOrgPage(int pageNum, int pageSize);
    /*
   *ZL 2018-8-3 14:47:19
   *方法描述：查询组织机构信息
   */
    List<Org> queryOrg();

    /*
    *ZL 2018-8-23 09:45:43
    *方法描述：编辑机构名称
    */
    int updateOrgName(Org org);
    /*
    *ZL 2018-8-23 10:27:27
    *方法描述：通过ID删除对应组织机构
    */
    int delOrgbyId(String treeid);
    /*
    *ZL 2018-8-23 10:27:27
    *方法描述：通过父ID删除对应组织机构
    */
    int delOrgbyPid(String treeid);
    /*
    *ZL 2018-8-23 14:43:29
    *方法描述：批量删除组织机构子节点
    */
    int clearChildren (Map map);
    /*
     *ZL 2018-8-24 10:13:46
     *方法描述：查询当前排序
     */
    Org queryOrgSn();
   /*
   *ZL 2018-8-24 10:13:46
  *方法描述：添加机构
    */
   void addOrg(Org org);
    /*
     *ZL 2018-8-24 10:13:46
     *方法描述：查询当前ID
     */
    String queryOrgId(String orgId);

    /**
     * 方法描述: 修改机构简介
     * SJC 2018-9-10 20:17:39
     *
     */
    int updateOrgDesc(String orgId,String orgDesc);


    /**
     * 方法描述: 修改招聘简介
     * SJC 2018-9-10 20:17:39
     *
     */
    int updateRecruit(String id,String recruitInfo);


    /**
     * 方法描述: 修改教研团队
     * SJC 2018-9-10 20:17:39
     *
     */
    int updateTeam(String id,String teamInfo);

    /**
     * 方法描述:新增招聘信息
     * SJC 2018-9-28 17:37:23
     *
    */
    int addOrgRecruit(String orgId,String desc);

    /**
     * 方法描述:新增教研团队
     * SJC 2018-9-28 17:38:06
     *
    */
    int addOrgTeam(String orgId,String desc);

    /**
     * 方法描述: 新增组织机构详情
     * SJC 2018-9-10 20:17:39
     *
    */
    int updateOrgDetail(String orgId,String orgName,String address,String coordinate);

    /**
     * 方法描述: 新增组织机构详情
     * SJC 2018-9-10 20:17:39
     *
     */
    int addOrgAttach(OrgAttach orgAttach);

    void delOrgAttrch(String id,String imgUrl);

    void updateOrgDet(String orgId,String orgDesc);

    /**
     * 方法描述:获取组织详情
     * SJC 2018-9-12 19:40:29
     *
    */
    List<Map<String, Object>> queryOrgInfos(String id);

    /**
     * 方法描述:获取简介列表
     * SJC 2018-9-12 19:40:29
     *
     */
    MyPageImpl queryIntroduce(String id, String contentType, Pageable pageable);

    /**
     * 方法描述:获取简介详情
     * SJC 2018-9-12 19:40:29
     *
     */
    List<Map<String,Object>> queryIntroduceInfo(String id,String contentType);

    /**
     * 方法描述:根据组织id获取附件列表
     * SJC 2018-9-12 19:44:59
     *
    */
    List<OrgAttach> queryOrgAttach(String orgId);

    /**
     * 方法描述:新增招聘信息
     * SJC 2018-9-25 20:35:45
     *
    */
    int  addRecruit(OrgRecruit orgRecruit);


    /**
     * 方法描述:新增教研团队
     * SJC 2018-9-25 20:35:45
     *
     */
    int  addTeam(OrgTeam team);

    String queryOrgIdByUserId(String userId);

    String queryOrgNameByOrgId(String orgId);

//    List<User> queryTeacherTeam();

    UserAttach queryTeacherDet(String userId);

    void updateOrgBasic(Org org);

    String queryUpMaxSn(String parentId);

    PageInfo<Map<String,Object>>queryLiveList(Pageable pageable,String orgId);

    int updateOrgLiveState(Map<String,Object>parms);

    PageInfo<Map<String,Object>>queryLiveAllList(Pageable pageable);

    OrgLive queryLiveByLiveId(String liveId);

    void addLive(OrgLive orgLive);

    int updateLive(OrgLive orgLive);

    int delLiveByLiveId(String liveId);

    void delLiveAtt(String liveId,String imgUrl);
}
